package test.mdd;

import static org.junit.Assert.*;

import org.junit.Test;

class TestScriptExe {

	//这是一段 groovy 脚本
	String code = """
		int plus(){ 
			return 5+5
		}		

		int a = plus()
		println "result=" + a
		a		//作为返回值返回

"""

	/**
	 * 演示如何编程执行脚本
	 */
	@Test
	void startParser() {
		//创建脚本对象
		Script dslScript = new GroovyShell().parse(code)
		//执行脚本
		Object result = dslScript.run();

		assertTrue(result == 10)
	}

	/**
	 * 演示如何编程执行脚本,同时替换了脚本中的 println 函数
	 */
	@Test
	void ReplaePrintln() {
		
		StringBuilder b = new StringBuilder()
		//替换掉脚本中的 println 函数
		Script dslScript = new GroovyShell().parse(code)
		dslScript.metaClass.println = {
			b.append(it)
		}
		Object result = dslScript.run();
		assertTrue(b.toString() == "result=10")
	}
}
